package org.dllwh.dm;

import cn.hutool.setting.dialect.Props;
import cn.hutool.setting.dialect.PropsUtil;

import java.sql.*;

/**
 * 把今天最好的表现当作明天最新的起点．．～
 * <p>
 * Today the best performance as tomorrow the newest starter!
 *
 * @ClassName DmJdbcHelper
 * @Description TODO(这里用一句话描述这个类的作用)
 * @Date 2024-11-04 12:52
 * @版本 V 1.0.1
 * @see <a href="">TODO(连接内容简介)</a>
 * @since JDK 17
 */
public final class DmJdbcHelperUtil {
    /**
     * 获取连接的方法. 通过读取配置文件从数据库服务器获取一个连接.
     */
    public static Connection getDmJdbcConnection() {
        Props props = PropsUtil.get("jdbc.properties");
        // 定义DM JDBC驱动串
        String jdbcString = props.getStr("db.driverClassName");
        // 定义DM URL连接串
        String urlString = props.getStr("db.url");
        // 定义连接用户名
        String userName = props.getStr("db.user");
        // 定义连接用户口令
        String password = props.getStr("db.password");

        // 定义连接对象
        Connection connection = null;
        try {
            // 1、加载 JDBC 驱动程序(对应的 Driver 实现类中有注册驱动的静态代码块)
            System.out.println("加载 JDBC 驱动...");
            Class.forName(jdbcString);

            // 2、通过 DriverManager 的 getConnection() 方法获取数据库连接
            System.out.println("连接 DM 数据库...");
            connection = DriverManager.getConnection(urlString, userName, password);
            connection.setAutoCommit(true);
            System.out.println("[SUCCESS]conn database");

        } catch (Exception exp) {
            System.out.println("[FAIL]conn database：" + exp.getMessage());
        }
        return connection;
    }

    /**
     * 释放资源，关闭 ResultSet、Statement、Connection
     */
    public static void release(ResultSet resultSet, Statement statement, Connection conn) throws SQLException {
        if (resultSet != null) {
            resultSet.close();
        }

        if (statement != null) {
            statement.close();
        }

        if (conn != null) {
            conn.close();
        }
    }
}
